#ifndef __IGRIPPOINT_H_
#define __IGRIPPOINT_H_

#include <MCVector2.h>
#include <MCPoint2D.h>

using std::size_t;
class IGraphicsItem;
class ICanvas;

enum MCGripPointType
{
    NoType = 0,
    EndPoint,
    StartPoint,
    MidPoint,
    CenterPoint,
    RadiusPoint
};

class IGripPoint
{
public:

    virtual size_t index() const = 0;
    virtual IGraphicsItem *owner() = 0;
    virtual const MCPoint2D &position() = 0;
    virtual void move(const MCVector2 &direction) = 0;
    virtual void setPositionAt(const MCPoint2D &at) = 0;
    virtual void update(const MCPoint2D &position) = 0;
    virtual void update(double x, double y) = 0;
    virtual ICanvas *canvas() = 0;

};

#endif // !__IGRIPPOINT_H_
